//hello
#include<iostream>
using namespace std;
int main()
{
cout<<"Hello world!"<<endl;
return 0;
}
Compile:
g++ -o hello hello.cpp
./hello
Opgavens pointe har været at lave en simpelt hello_world fil i cpp. filen har vi så compilet med g++ compilere. Med compileren oprettes der en o fil ud fra filen hello.cpp. Exercute filen bliver placeret i samme bibliotek. Idéen med opgaven er at se på hvordan man kan compile uden brug af standard hjælpe programmer som f.eks. eclipse, Visual osv. Vi ser altså dte er muligt at compile uden brug af disse, dette kan bl.a. også benyttes om man ønsker at bruge f.eks. emacs som sin editor hvor man er nødsaget til selv at danne sine makefile's.
Opgave 2. Makefile
Makefile benyttes til at samle filer og compile dem til en execute file. I denne øvelses del benyttes der dog kun hello.cpp. Ved at tilføje andre targets kan vi bla. få functioner som kan benyttes til clean osv. ved kald: make clean.
#Hello world makefile
#Sources
SOURCES = hello.cpp
OBJECTS = ${SOURCES:.cpp=.o}
EXECUTABLE=hello
#Compile
CC=g++
CFLAGS+= -Wall -g
#Tagets
build: ${OBJECTS}
${CC} -o ${EXECUTABLE} ${OBJECTS}
hello.o: hello.cpp
${CC} -c hello.cpp
#Clean up in files
clean:
@echo "Removing files..."
rm -f ${EXECUTABLE} ${OBJECTS}
help:
@echo "Avaiable targets..."
@echo "- help (watching now)"
@echo "- build (to build the binary)"
@echo "- clean (to cleanup everything)"
@echo "Print, what in folder"
@ls
I makefilen kalder vi først de sourcefiler der skal benyttes, om flere defineres de også her. Objekt defineres til at have cpp fil og o og så fortæller vi at vi ønsker at lave en execute fil der hedder hello.
Compileren der vælges er g++ da det er c++ kode der skal compiles og køres i terminalen. Om det var c kode, eller kode der skulle compiles til et target(embedded system) så skulle vi have brugt en anden compiler.
I Target defineres der hvordan der skal bygges og hvilke filer der skal compiles og laves .o fil til. ved flere filer i programmet defineres flere .o filer.
I opgaven skal vi desuden lave en clean function som kan clean alle objekt filer og .o filer. Denne laves også under target sammen med help funktionen som kan fortælle bla. hvor mange targets der er tilgængelige.
Som i opgave 2 bygges der en makefile men for denne har vi lavet den til at compile flere parts, dette vil sige ta vi har udvidet makefilen lidt. Som beskrevet i opgave kaldes alle source files der skal benyttes og så bygger vi flere objekter under target til at compile med. alt compiles til en execute file.
Opgave 4
der bliver oprettet et c++ projekt i eclipse derefter tilføjes headerfiler( part1, part 2) og cppfiler( part1, part2, main)
til sidst buildes projektet
for at være sikker på at operativsystemet ved at main er afsluttet korekt bruges return EXIT_SUCCESS
dete gør at operativsystemet uanset om systemet bruger return 0 eller return 1 ved at programmet er afsluttet korekt.
part1.h
part2.h
part1.cpp
part2.cpp
main.cpp
efter kompileringen at programmet er blevet kompileret kan programmet tilgås fra terminalen
fra terminalen eksekveres programmet med ./ komandoen.
Hvad har vi fået ud af denne øvelse:
Vi har lært hvordan man kan compile på host ved hjælp af g++ compileren fra terminalen. Metoden er den samme som benyttes når vi skal compile til target som vi skal lære på et senere tidspunkt.
Vi har lært at lave grundlæggende makefile's som kan compile, lave en executable og clean. Dette kan bruges til at compile store projekter hvor den tager mange filer, compiler det og laver en executable.
Vi har lært at bruge eclipse til at compile vores kode for os. Dette er samtidigt en god editor til vores kode.
Cpp fil:
//hello #include<iostream> using namespace std; int main() { cout<<"Hello world!"<<endl; return 0; }Compile:
Opgavens pointe har været at lave en simpelt hello_world fil i cpp. filen har vi så compilet med g++ compilere. Med compileren oprettes der en o fil ud fra filen hello.cpp. Exercute filen bliver placeret i samme bibliotek. Idéen med opgaven er at se på hvordan man kan compile uden brug af standard hjælpe programmer som f.eks. eclipse, Visual osv. Vi ser altså dte er muligt at compile uden brug af disse, dette kan bl.a. også benyttes om man ønsker at bruge f.eks. emacs som sin editor hvor man er nødsaget til selv at danne sine makefile's.
Opgave 2. Makefile
Makefile benyttes til at samle filer og compile dem til en execute file. I denne øvelses del benyttes der dog kun hello.cpp. Ved at tilføje andre targets kan vi bla. få functioner som kan benyttes til clean osv. ved kald: make clean.
#Hello world makefile #Sources SOURCES = hello.cpp OBJECTS = ${SOURCES:.cpp=.o} EXECUTABLE=hello #Compile CC=g++ CFLAGS+= -Wall -g #Tagets build: ${OBJECTS} ${CC} -o ${EXECUTABLE} ${OBJECTS} hello.o: hello.cpp ${CC} -c hello.cpp #Clean up in files clean: @echo "Removing files..." rm -f ${EXECUTABLE} ${OBJECTS} help: @echo "Avaiable targets..." @echo "- help (watching now)" @echo "- build (to build the binary)" @echo "- clean (to cleanup everything)" @echo "Print, what in folder" @lsI makefilen kalder vi først de sourcefiler der skal benyttes, om flere defineres de også her. Objekt defineres til at have cpp fil og o og så fortæller vi at vi ønsker at lave en execute fil der hedder hello.Compileren der vælges er g++ da det er c++ kode der skal compiles og køres i terminalen. Om det var c kode, eller kode der skulle compiles til et target(embedded system) så skulle vi have brugt en anden compiler.
I Target defineres der hvordan der skal bygges og hvilke filer der skal compiles og laves .o fil til. ved flere filer i programmet defineres flere .o filer.
I opgaven skal vi desuden lave en clean function som kan clean alle objekt filer og .o filer. Denne laves også under target sammen med help funktionen som kan fortælle bla. hvor mange targets der er tilgængelige.
Opgave 3 Flere filer
#Parts #Sources SOURCES = main.cpp part1.cpp part2.cpp OBJECTS = ${SOURCES:.cpp=.o} EXECUTABLE=parts1+2 #Compile CC=g++ CFLAGS+= -Wall -g #Tagets build: ${OBJECTS} ${CC} -o ${EXECUTABLE} ${OBJECTS} main.o: main.cpp ${CC} -c main.cpp part1.o: part1.cpp ${CC} -c part1.cpp part2.o: part2.cpp ${CC} -c part2.cpp clean: @echo "Removing files..." rm -f ${EXECUTABLE} ${OBJECTS} help: @echo "Avaiable targets..." @echo "- help (watching now)" @echo "- build (to build the binary)" @echo "- clean (to cleanup everything)" @echo "Print, what in folder" @lsSom i opgave 2 bygges der en makefile men for denne har vi lavet den til at compile flere parts, dette vil sige ta vi har udvidet makefilen lidt. Som beskrevet i opgave kaldes alle source files der skal benyttes og så bygger vi flere objekter under target til at compile med. alt compiles til en execute file.Opgave 4
der bliver oprettet et c++ projekt i eclipse derefter tilføjes headerfiler( part1, part 2) og cppfiler( part1, part2, main)
til sidst buildes projektet
for at være sikker på at operativsystemet ved at main er afsluttet korekt bruges return EXIT_SUCCESS
dete gør at operativsystemet uanset om systemet bruger return 0 eller return 1 ved at programmet er afsluttet korekt.
part1.h
part2.h
part1.cpp
part2.cpp
main.cpp
efter kompileringen at programmet er blevet kompileret kan programmet tilgås fra terminalen
fra terminalen eksekveres programmet med ./ komandoen.
Hvad har vi fået ud af denne øvelse:
Vi har lært hvordan man kan compile på host ved hjælp af g++ compileren fra terminalen. Metoden er den samme som benyttes når vi skal compile til target som vi skal lære på et senere tidspunkt.
Vi har lært at lave grundlæggende makefile's som kan compile, lave en executable og clean. Dette kan bruges til at compile store projekter hvor den tager mange filer, compiler det og laver en executable.
Vi har lært at bruge eclipse til at compile vores kode for os. Dette er samtidigt en god editor til vores kode.